<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
    <script>

        const Star = function (name,age){
            this.name = name
            this.age = age
        }

        const ldh = new Star('刘德华',61)

        // Star通过prototype 找到原型对象
        // Star.prototype
        // ldh通过nwe Star 实例化对象
        // new的过程
        // 1 创建一个新的空对象
        // 2 改变原型链的指向
        // ldh.__proto__ = Star.prototype
        // 3 改变this 的指向 并执行函数的函数体
        // Star.call(ldh,参数1，参数2，...)
        // 4 判断回调函数的返回值是不是引用数据类型 ，如果是则返回回调函数的返回值
        // 如果不是则返回 新创建的对象

        // 实例化对象通过__proto__ 指向原型对象 ，实例化原型对象和构造函数的原型对象是一样的
        // ldh.__proto__ = Star.prototype

        // 原型对象在通过__proto__ 指向Object的原型对象
        // ldh.__proto__.__proto__ = Object.prototype
        // Object.prototype 通过 constructor 指向构造函数 Object
        // Object.prototype.constructor = Object

        // Object构造函数通过prototype 指向原型对象
        // Object.prototype

        // Object 的原型对象在往上找指向null
        // ldh.__proto__.__proto__.__proto__ = null





        // console.log(Star.prototype);
        // console.log(ldh.__proto__);

    </script>
</body>
</html>